﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Domain.MainModule.Entities;

namespace Application.MainModule.SoundexCodesManagement
{
    public interface ISoundexCodeManagementService
    {
        /// <summary>
        /// Add new soundexCode
        /// </summary>
        /// <param name="soundexCode">SoundexCode to be added</param>
        void AddSoundexCode(SoundexCode soundexCode);

        /// <summary>
        /// Change existing soundexCode
        /// </summary>
        /// <param name="soundexCode">Existing soundexCode to modify</param>
        void ChangeSoundexCode(SoundexCode soundexCode);

        /// <summary>
        /// Remove existing soundexCode
        /// </summary>
        /// <param name="soundexCode">SoundexCode to remove</param>
        void RemoveSoundexCode(SoundexCode soundexCode);

        /// <summary>
        /// Find an soundexCode using userId
        /// </summary>
        /// <param name="userId">userId</param>
        /// <returns>A list of soundex codes</returns>
        List<SoundexCode> FindSoundexCodeByUserId(Guid userId);

        /// <summary>
        /// Find the soundex codes using the value
        /// </summary>
        /// <param name="value">value ti find</param>
        /// <returns>a list of soundex codes</returns>
        List<SoundexCode> FindSoundexCodeByValue(string  value);
    }
}
